// pages/register/register.js
import Mcaptcha from '../../../utils/mcaptcha';
import { setUserInfo, setUserGrade } from '../../../utils/userInfo';
import Toast from '../../../miniprogram_npm/@vant/weapp/toast/toast';
Page({
    /**
     * 页面的初始数据
     */
    data: {
        showPwd1: true, // 是否隐藏密码
        wxuser: {},
        formData: {
            phone: '',
            password: '',
        },
    },
    // 密码输入框改变时，将value存入 this.data.formData
    handleChangePwd(e) {
        console.log(e.detail.value);
        this.setData({
            formData: {
                password: e.detail.value,
            }
        })
    },
    // 显示密码
    yesPwd1() {
        this.setData({
            showPwd1: false,
        })
    },
    // 隐藏密码
    noPwd1() {
        this.setData({
            showPwd1: true,
        })
    },

    // 点击绑定按钮
    regFormSubmit(e) {
        console.log('提交的form数据', e.detail.value);
        const { openid, wxAvatarUrl, wxNickName } = this.data.wxuser;
        const { agreement, guiCode, phone, password } = e.detail.value;

        // 检查图形验证码是否正确
        let isGuiCode = false;
        const res = this.mcaptcha.validate(guiCode);
        if (guiCode == '' || guiCode == null) {
            isGuiCode = false;
        }
        if (!res) {
            isGuiCode = false;
        } else {
            // console.log('图形验证码正确');
            isGuiCode = true;
        }

        // 是否勾选了协议
        if (agreement.length != 0) {
            // 首选判断，该微信用户是否已经绑定过账号了
            wx.cloud.callFunction({
                // 云函数名称
                name: 'reqUserAPI',
                // 传给云函数的参数
                data: {
                    reqName: 'isAccountBind', // 声明类型
                    openid,
                    phone,
                    password,
                },
            })
                .then(isAccountBindRes => {
                    const { isExistOpenid } = isAccountBindRes.result;
                    console.log(isAccountBindRes);
                    if (!isExistOpenid) {
                        // 生成请求数据，使用云函数将数据用户数据存入数据库
                        wx.cloud.callFunction({
                            // 云函数名称
                            name: 'reqUserAPI',
                            // 传给云函数的参数
                            data: {
                                reqName: 'accountBind', // 声明类型
                                phone,
                                password,
                                openid,
                                nickname: wxNickName,
                                avatar: wxAvatarUrl
                            },
                        })
                            .then(res => {
                                const { isExistPhone, userInfo, isPasswordValid, isAccountBind, userGrade } = res.result;
                                if (isExistPhone && isPasswordValid && isGuiCode) {
                                    if (isAccountBind) {
                                        Toast({
                                            type: 'success',
                                            message: '绑定成功',
                                            onClose: () => {
                                                this.refreshGidCode(); // 刷新验证码
                                                setUserInfo(userInfo.data);
                                                setUserGrade(userGrade);
                                                wx.reLaunch({
                                                    url: '../../../pages/mine/mine',
                                                });
                                            },
                                        });
                                    } else {
                                        Toast.fail('绑定失败');
                                    }
                                } else {
                                    Toast.fail('请检查手机号、密码和验证码是否正确');
                                }
                                console.log(res.result);
                            })
                            .catch(console.error)
                    } else {
                        Toast.fail('不能绑定，因为该微信用户已经绑定过了');
                    }
                })
                .catch(console.error)
        } else {
            Toast('请先勾选协议');
        };
    },

    //刷新验证码
    refreshGidCode() {
        this.mcaptcha.refresh();
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {
        const that = this;
        // console.log(options);
        that.setData({
            wxuser: JSON.parse(options.wxuser)
        })
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {
        this.mcaptcha = new Mcaptcha({
            el: 'canvas',
            width: 80,
            height: 45,
            createCodeImg: ""
        });
    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})